import cv2
import time


def cv_模板匹配(img1, img2):
    # cv2.setNumThreads(0)  # 全局禁用并行处理
    cv2.setUseOptimized(False)  # 关闭SIMD优化(如SSE/AVX),关闭会慢一倍
    s = time.time()
    result = cv2.matchTemplate(img1, img2, cv2.TM_CCOEFF_NORMED)  # 归一化相关系数
    print('cv 模板匹配耗时:', time.time() - s)
    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
    return result, max_val, max_loc


# 读取原始图像和模板图像
# 注意：确保图像路径正确，这里使用灰度图匹配效果更好
img = cv2.imread('../game/map.jpg', 0)  # 0表示以灰度模式读取
template = cv2.imread('../game/model/i.png', 0)

# 获取模板图像的尺寸
h, w = template.shape[:2]

# 调用模板匹配函数
result, max_val, max_loc = cv_模板匹配(img, template)

# 输出匹配结果
print(f"最大匹配值: {max_val:.4f}")  # 越接近1表示匹配度越高
print(f"最佳匹配位置: {max_loc}")